home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet multimedia
/
Muzyka
/
Edytory sampli (probek dzwieku)
/
ZynAddSubFX_2.2.0
/
Setup_ZynAddSubFX-2.2.0.exe
/
source code
/
Params
/
Controller.h
< prev
next >
Wrap
C/C++ Source or Header
|
2005-03-14
|
5KB
|
180 lines
/*
ZynAddSubFX - a software synthesizer
Controller.h - (Midi) Controllers implementation
Copyright (C) 2002-2005 Nasca Octavian Paul
Author: Nasca Octavian Paul
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License (version 2) for more details.
You should have received a copy of the GNU General Public License (version 2)
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef CONTROLLER_H
#define CONTROLLER_H
#include "../globals.h"
#include "../Misc/XMLwrapper.h"
class Controller{
public:
Controller();
~Controller();
void resetall();
void add2XML(XMLwrapper *xml);
void defaults();
void getfromXML(XMLwrapper *xml);
//Controllers functions
void setpitchwheel(int value);
void setpitchwheelbendrange(unsigned short int value);
void setexpression(int value);
void setpanning(int value);
void setfiltercutoff(int value);
void setfilterq(int value);
void setbandwidth(int value);
void setmodwheel(int value);
void setfmamp(int value);
void setvolume(int value);
void setsustain(int value);
void setportamento(int value);
void setresonancecenter(int value);
void setresonancebw(int value);
void setparameternumber(unsigned int type,int value);//used for RPN and NRPN's
int getnrpn(int *parhi, int *parlo, int *valhi, int *vallo);
int initportamento(REALTYPE oldfreq,REALTYPE newfreq);//returns 1 if the portamento's conditions are true, else return 0
void updateportamento(); //update portamento values
// Controllers values
struct {//Pitch Wheel
int data;
short int bendrange;//bendrange is in cents
REALTYPE relfreq;//the relative frequency (default is 1.0)
} pitchwheel;
struct{//Expression
int data;
REALTYPE relvolume;
unsigned char receive;
} expression;
struct{//Panning
int data;
REALTYPE pan;
unsigned char depth;
} panning;
struct{//Filter cutoff
int data;
REALTYPE relfreq;
unsigned char depth;
} filtercutoff;
struct{//Filter Q
int data;
REALTYPE relq;
unsigned char depth;
} filterq;
struct{//Bandwidth
int data;
REALTYPE relbw;
unsigned char depth;
unsigned char exponential;
} bandwidth;
struct {//Modulation Wheel
int data;
REALTYPE relmod;
unsigned char depth;
unsigned char exponential;
} modwheel;
struct{//FM amplitude
int data;
REALTYPE relamp;
unsigned char receive;
} fmamp;
struct{//Volume
int data;
REALTYPE volume;
unsigned char receive;
} volume;
struct{//Sustain
int data,sustain;
unsigned char receive;
} sustain;
struct{//Portamento
//parameters
int data;
unsigned char portamento;
//pitchthresh is the threshold of enabling protamento
//pitchthreshtype -> enable the portamento only below(0)/above(1) the threshold
unsigned char receive,time,pitchthresh,pitchthreshtype;
//'up portanemto' means when the frequency is rising (eg: the portamento is from 200Hz to 300 Hz)
//'down portanemto' means when the frequency is lowering (eg: the portamento is from 300Hz to 200 Hz)
unsigned char updowntimestretch;//this value represent how the portamento time is reduced
//0 - for down portamento, 1..63 - the up portamento's time is smaller than the down portamento
//64 - the portamento time is always the same
//64-126 - the down portamento's time is smaller than the up portamento
//127 - for upper portamento
REALTYPE freqrap;//this value is used to compute the actual portamento
int noteusing;//this is used by the Part:: for knowing which note uses the portamento
int used;//if a the portamento is used by a note
//internal data
REALTYPE x,dx;//x is from 0.0 (start portamento) to 1.0 (finished portamento), dx is x increment
REALTYPE origfreqrap;// this is used for computing oldfreq value from x
} portamento;
struct{//Resonance Center Frequency
int data;
REALTYPE relcenter;
unsigned char depth;
} resonancecenter;
struct{//Resonance Bandwidth
int data;
REALTYPE relbw;
unsigned char depth;
} resonancebandwidth;
/* RPN and NPRPN */
struct{//nrpn
int parhi,parlo;
int valhi,vallo;
unsigned char receive;//this is saved to disk by Master
} NRPN;
private:
};
#endif